home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / foomatic-searchprinter < prev    next >
Text File  |  2009-09-18  |  2KB  |  94 lines

  1. #!/usr/bin/perl
  2. # -*- Perl -*-
  3.  
  4. #
  5. # This script searches for printers in the database. You can give the
  6. # printer manufacturer and model names or the IEEE-1284 device ID of
  7. # the printer. You will get one or more results sorted by how well they
  8. # match. Exact metch of the model-identifying parts of the IEEE-1284 device ID
  9. # counts highest. Run "foomatic-addpjloptions -h" to get help.
  10. #
  11.  
  12. #
  13. # Till Kamppeter (till.kamppeter@gmx.net)
  14. #
  15. # Copyright 2007 Till Kamppeter
  16. #
  17. # This software may be freely redistributed under the terms of the GNU
  18. # General Public License (http://www.gnu.org/).
  19. #
  20. # You should have received a copy of the GNU General Public License
  21. # along with this program; if not, write to the Free Software
  22. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23. #
  24.  
  25. use strict;
  26. use FileHandle;
  27.  
  28. sub usage(){
  29.     print STDERR <<EOF;
  30. Usage: foomatic-searchprinter [-mM] [-dD] <search term>
  31.        foomatic-searchprinter -h
  32.  
  33.    <search term>: Manufacturer/model, separated by a space or a '|',
  34.                   IEEE-1284 device ID, manufacturer, model, Foomatic
  35.           printer ID, or parts of any of the mentioned items
  36.  
  37.    -mM            Search mode:
  38.                   M = 0: Match everything (default)
  39.                   M = 1: No matches on only the manufacturer
  40.                   M = 2: No matches on only the manufacturer or only the model
  41.                   M = 3: Exact matches of device ID, make/model, or Foomatic ID
  42.                          plus matches of the page description language in the
  43.              device ID to appropriate "Generic" printers
  44.                   M = 4: Exact matches of device ID, make/model, or Foomatic ID
  45.                          only
  46.     
  47.    -dD            Display results
  48.                   D = 0: Everything
  49.           D = 1: Only best match class (default)
  50.           D = 2: Only best match
  51.  
  52.    -h             This help message
  53.  
  54. EOF
  55.  
  56.     exit(1);
  57. }
  58.  
  59. # Read command line options
  60. use Getopt::Std;
  61. # Help
  62. my $opt = {};
  63. getopts("m:d:h",$opt) || usage();
  64.  
  65. # Show usage info
  66. if ($opt->{h}) {
  67.     usage();
  68. }
  69.  
  70. # Options
  71. my $mode = 0;
  72. if (defined($opt->{m})) {
  73.     $mode = $opt->{m};
  74.     usage() if ($mode < 0) || ($mode > 4);
  75. }
  76.  
  77. my $output = 1;
  78. if (defined($opt->{d})) {
  79.     $output = $opt->{d};
  80.     usage() if ($output < 0) || ($output > 2);
  81. }
  82.  
  83.  
  84. # Search term
  85. my $searchterm = join(' ', @ARGV);
  86. usage() if !$searchterm;
  87.  
  88. use Foomatic::Defaults;
  89. use Foomatic::DB;
  90.  
  91. my $db = new Foomatic::DB;
  92.  
  93. print join("\n", $db->find_printer($searchterm, $mode, $output)) . "\n";
  94.